package com.one.model;

import javax.swing.*;
import javax.swing.event.ListDataListener;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class NumberListModel extends AbstractListModel<BigDecimal> {
    //实现ListModel接口,要实现所有方法，现在只想实现getSize和getElementAt方法
    //继承AbstractListModel，实现接口中的方法
    BigDecimal start;//起始值
    BigDecimal end;//结束值
    BigDecimal step;//步长

    public NumberListModel(BigDecimal start, BigDecimal end, BigDecimal step) {
        this.start = start;
        this.end = end;
        this.step = step;
    }


    @Override
    public int getSize() {
        //计算总共有多少个元素
        int floor = (int) Math.floor (end.subtract(start).divide(step,2, RoundingMode.HALF_DOWN).doubleValue());
        //RoundingMode.HALF_DOWN表示四舍五入，2表示保留两位小数
        return floor+1;
    }

    @Override
    public BigDecimal getElementAt(int index) {
        BigDecimal ele = new BigDecimal(index).multiply(step).add(start).setScale(2, RoundingMode.HALF_DOWN);
        return ele;
    }
}
